package com.sprouting.ops.model;

import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.sprouting.ops.annotations.invoke.CheckIsNullOrEmpty;
import com.sprouting.ops.annotations.invoke.CheckLength;
import com.sprouting.ops.annotations.invoke.CheckNotNull;
import com.sprouting.ops.interfaces.AddGroup;
import com.sprouting.ops.interfaces.UpdGroup;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;

import java.util.Date;

/**
 * 部署信息-工具(OpsDeployTool)(OPS_DEPLOY_TOOL) 表实体类
 *
 * @author ：lx（长沙麓谷）
 * @date 创建时间：2025-07-22 16:38:41
 */
@Data
@TableName("ops_deploy_tool")
public class OpsDeployTool extends BaseModel {

    /**
     * 主键
     */
    @CheckNotNull(message = "非法ID", groups = UpdGroup.class)
    @CheckIsNullOrEmpty(message = "无效ID", groups = AddGroup.class)
    @TableId
    private String id;
    /**
     * 隶属场所
     * @see OpsSite#getId()
     */
    private String siteId;
    /**
     * 计算机id
     * @see OpsComputerServer#getId()
     */
    @CheckNotNull(message = "必须选择计算机")
    private String computerServerId;
    /**
     * 部署基础位置
     */
    @CheckLength(max = 1000, message = "部署基础位置超过长度限制")
    private String basePath;
    /**
     * 启动和关闭方式
     */
    private String startEnd;
    /**
     * 部署过程
     */
    private String deployProcess;
    /**
     * 验证方式
     */
    private String verification;
    /**
     * 使用网络端口，可以多个
     */
    @CheckLength(max = 300, message = "网络端口超过长度限制")
    private String ports;
    /**
     * 部署人-暂时还是使用全名，不关联用户表
     */
    @CheckLength(max = 200, message = "部署人超过长度限制")
    private String deployUser;
    /**
     * 部署时间
     */
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    @JsonFormat(pattern="yyyy-MM-dd", timezone = "GMT+8")
    private Date deployTime;
    /**
     * 备份目录
     */
    private String bakPath;
    /**
     * 工具版本
     */
    private String toolVersion;
    /**
     * 工具id-工具
     * @see OpsTool#getId()
     */
    @CheckNotNull(message = "必须选择一个工具")
    private String toolId;

}
